package com.tulele.vtool.service;

import com.tulele.vtool.model.LookArticleInfo;
import com.tulele.vtool.model.combinedEntity.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ILookArticleInfoService {

    /**
     * 添加文章查看信息
     * @param lookArticleInfo
     * @return
     */
    int recordLookArticleInfo(LookArticleInfo lookArticleInfo);

    /**
     * 更新文章查看信息
     * @param lookArticleInfo
     * @return
     */
    int modifyLookArticleInfo(LookArticleInfo lookArticleInfo);

    /**
     * 查看用户文章总查看次数统计信息
     * @param userId
     * @return
     */
    LookArticleStatisEntity getTotalLookArticleStatisInfo(Integer userId);

    /**
     * 查看用户文章当天查看次数统计信息
     * @param userId
     * @return
     */
    LookArticleStatisEntity getTodayLookArticleStatisInfo(Integer userId);

    /**
     * 查询用户查看文章的统计信息
     * @param lookArticleInfo
     * @return
     */
    CombinedLookArticleUserInfo getUserLookArticleStatisInfo(LookArticleInfo lookArticleInfo);

    /**
     * 查询用户查看他人文章的信息
     * @param lookArticleInfo
     * @return
     */
    LookArticleInfo getLookOtherArticleInfo(LookArticleInfo lookArticleInfo);

    //查询用户最近看的品牌文章信息
    LookArticleInfo getUserOneBrandId(String springProfilesActive,Integer userId);

    /**
     * 查询查看用户文章的用户和查看次数统计
     * @param userId
     * @return
     */
    List<LookUserArticleStatisInfo> getLookUserArticleStatisInfo(@Param("userId")Integer userId, @Param("recordSize")Integer recordSize);

    /**
     * 查询查看了文章的用户信息
     * @param userId
     * @return
     */
    List<CombinedLookArticleUserInfo> getLookArticleUserInfo(Integer userId);

    /**
     * 删除模拟访问用户
     * @param virtualUserIds
     * @return
     */
    int removeVirtualVisitUsers(List<String> virtualUserIds, Integer userId);

    /**
     *
     * @param id
     * @return
     */
    Integer returnLookArticleId(Integer id);

    /**
     * 获取访客数量
     * @param userId 用户 ID
     * @return 访客数量
     */
    int getVisitorCount(Integer userId);

    /**
     * 获取本周的用户阅读数量列表
     * @param userId 用户 ID
     * @return 本周的用户阅读数量列表
     */
    List<CombinedCustomerInfo> getCurrentWeekReadData(Integer userId);

    /**
     * 获取本月的用户阅读数量列表
     * @param userId 用户 ID
     * @return 本月的用户阅读数量列表
     */
    List<CombinedCustomerInfo> getCurrentMonthReadData(Integer userId);

    /**
     * 获取本季的用户阅读数量列表
     * @param userId 用户 ID
     * @return 本季的用户阅读数量列表
     */
    List<CombinedCustomerYearInfo> getCurrentSeasonReadData(Integer userId);

    /**
     * 获取年度的用户阅读数量列表
     * @param userId 用户 ID
     * @return 年度的用户阅读数量列表
     */
    List<CombinedCustomerYearInfo> getCurrentYearReadData(Integer userId);

    /**
     * 获取本周的用户意向数量列表
     * @param userId 用户 ID
     * @return 本周的用户意向数量列表
     */
    List<CombinedCustomerInfo> getCurrentWeekIntentionData(Integer userId);

    /**
     * 获取本月的用户意向数量列表
     * @param userId 用户 ID
     * @return 本月的用户意向数量列表
     */
    List<CombinedCustomerInfo> getCurrentMonthIntentionData(Integer userId);

    /**
     * 获取本季的用户意向数量列表
     * @param userId 用户 ID
     * @return 本季的用户意向数量列表
     */
    List<CombinedCustomerYearInfo> getCurrentSeasonIntentionData(Integer userId);

    /**
     * 获取年度的用户意向数量列表
     * @param userId 用户 ID
     * @return 年度的用户意向数量列表
     */
    List<CombinedCustomerYearInfo> getCurrentYearIntentionData(Integer userId);

    /**
     * 获取文章的阅读量
     * @param articleId
     * @return
     */
    int getArticleReadCount(Integer articleId);

    /**
     * 获取文章的查看人数
     * @param articleId
     * @return
     */
    int getArticleLookCount(Integer articleId);
}
